package modelo;

import java.util.ArrayList;
import java.util.List;

import dao.ProyectoDAO;
import entidades.EstadoProyecto;
import entidades.Obrero;
import entidades.Proyecto;



public class ModeloProyecto {
	

	
	
	
	public List<Proyecto> obtenerListaProyectosActivos() throws Exception{
		return ProyectoDAO.getInstancia().obtenerListaProyectosActivos();
	}
	
	public List<Proyecto> obtenerListaTodosLosProyectos() throws Exception{
		return ProyectoDAO.getInstancia().obtenerListaTodosLosProyectos();
	}

	public void pausarProyecto(Proyecto proyecto)throws Exception {
		EstadoProyecto estado = obtenerEstadoProyecto(2);
		proyecto.setEstado(estado);
		
		ModeloObrero mo = new ModeloObrero();
		mo.liberarObreros(proyecto);

		ProyectoDAO.getInstancia().actualizarEstadoProyecto(proyecto, estado);
		
	}
	
	public void retomarProyecto(Proyecto proyecto)throws Exception {
		EstadoProyecto estado = obtenerEstadoProyecto(1);
		proyecto.setEstado(estado);
		
		ProyectoDAO.getInstancia().actualizarEstadoProyecto(proyecto, estado);
		
	}
	
	public void cerrarProyecto(Proyecto proyecto)throws Exception {
		EstadoProyecto estado = obtenerEstadoProyecto(3);
		proyecto.setEstado(estado);
		
		ModeloObrero mo = new ModeloObrero();
		mo.liberarObreros(proyecto);
		
		ProyectoDAO.getInstancia().actualizarEstadoProyecto(proyecto, estado);
		
	}
	
	public void asignarObreros(Proyecto proyecto, List<Obrero> listaObreros)throws Exception {
		ModeloObrero mo = new ModeloObrero();
		for (Obrero obrero : listaObreros) {
			mo.asignarObreroAProyecto(proyecto, obrero);

		}
	}
	
	public EstadoProyecto obtenerEstadoProyecto(int idEstadoProyecto) throws Exception {
		return ProyectoDAO.getInstancia().obtenerEstadoProyecto(idEstadoProyecto);
	}
	
	public String getDetalleAsignacionesProyecto(Proyecto proyecto)throws Exception{
		String aux = new String();
		try {
			List<Object> lista =  ProyectoDAO.getInstancia().obtenerDetalleAsignaciones(proyecto);		
			for (Object object : lista) {
				List<Object[]> l = new ArrayList<Object[]>();
				l.add((Object[]) object);
				for (Object[] object2 : l) {
					aux += object2[1]+" "+object2[0]+"\n";
				}
			}
			return aux;
		} catch (Exception e) {
			throw e;
		}
		
		
		
		
	}		
	
}
